The present invention relates generally to industrial control systems and more particularly, to a method and apparatus for transmitting industrial control data in such systems.
Industrial controllers are special purpose computers used for controlling industrial processes or manufacturing equipment. Under the direction of a stored program, the industrial controller examines a series of inputs reflecting the status of the controlled process and changes outputs effecting the control of the process. The inputs and outputs may be binary (i.e., “on” or “off”) or alternatively analog inputs and outputs taking on a continuous range of values may also be used. The binary inputs and outputs may be represented by single bits of data; the analog inputs and outputs may be represented by multiple bit data words.
The various components of an industrial controller are often spatially distributed about a factory or manufacturing facility to be interconnected by one or more communication networks. These communication networks are characterized by being highly reliable and by delivering data with a minimal and well-defined delay, as are required for real-time control. A number of different communication networks are commonly used in the industrial controller art including but not limited to: ControlNet™, DeviceNet™, and EtherNet/IP™ whose specifications are published and whose protocols are used broadly by a number of manufacturers and suppliers. These communication networks differ from one another in physical aspects, for example, the type of media (e.g., co-axial cable, twisted pair, light fiber, etc.); the protocols of its operation (e.g., baud rate, number of channels, word transmission size, use of connected messaging, etc.); and how the data is formatted and how it is collected into standard messages.
A common component of the industrial control system is an input or output (I/O) module which accepts data for an industrial controller from the controlled process or machine, and provides data from the industrial controller to the controlled process or machine. I/O modules are typically remote from the industrial controller and connected via a communications network as described above.
The various I/O modules employed in an industrial control system may generate data at differing intervals and frequencies. If the controller were to interface with the I/O modules asynchronously as each generated its data, the control system would encounter difficulties in synchronizing its control actions, and network traffic may become cumbersome. For instance, a controller may not require data from a particular I/O module at the same frequency as the module generates data. If the I/O module were to send a transaction to the controller each time it updated its data, the controller would be required to process transactions for data it did not need for its current control decision.
To optimize network traffic, translate and proxy between differing network types, and generate a synchronous data transfer frame, a scanner may be used as a physical or logical intermediary between the I/O modules and the controller. The scanner may interface with the I/O modules to collect data at predetermined update intervals, consolidate the data into a single optimized connection packet, and transfer the optimized connection packet to the controller using a single transaction per update interval. Hence, the controller receives data at a controlled and predetermined interval, presumably when it needs the data for control decision purposes.
The optimized connection packet is normally transmitted by a “connected messaging” protocol. As is understood in the art, connected messaging establishes a logical connection between two devices on a network (e.g. the controller and the scanner) which pre-allocates network bandwidth and buffer space, and other resources at the devices to ensure predictable and timely transmission of the data. This may be contrasted to unconnected messaging systems where changes in network traffic can unpredictably affect the communication of messages.
Upon generating the optimized connection packet, the scanner periodically sends the optimized connection packet to the controller over a pre-established connection. An optimized connection packet is a block of unstructured data representing the data collected from each of the I/O modules. The data from each module is concatenated in a predetermined order without formatting. The construct of the optimized connection packet is determined in advance. This predetermined construct is used by the controller application and the program development system (i.e., used to develop the controller application) when referencing data within the optimized connection packet. For example, if the output of a particular I/O module resides at bits N-K of the optimized connection packet, the program instructions in the controller application reference exactly these bits for use in the generation of a control decision.
In developing a control application, the application developer must know the mapping of the optimized connection packet. The fixed references to parts of the optimized connection packet are included in the program commands that make up the control application. If the mapping of the optimized connection packet changes, due to the addition or deletion of an I/O module, a change in the order of the I/O modules serviced by the scanner, etc., the fixed references must be updated in the control application so that the controller references the appropriate data.
As described in the parent application to the present case, references by a programmer to data of the optimized connection packet can be made easier through use of cast tags in which tag structures are used to translate from physical locations in the optimized connection packet to convenient variable names that may be incorporated into the program without reference to actual physical locations.
Combining all I/O data into a single optimized connection packet provides for extremely efficient communication of the I/O data, but it also forces a single rate of data delivery for all I/O data. Often it may be necessary to transmit some I/O data, for example, data that changes rapidly or is used to synchronize a high-speed process, at a much higher rate than the remaining I/O data. While the transmission rate of the optimized connection packet may be increased to match the desired data rate for this high-speed I/O data, this approach may be impractical with the available network bandwidth, and at least, wastes considerable bandwidth by transmitting all I/O data at an unnecessarily high rate.
If the need for a higher data rate for some data is discovered after programming is complete, moving this data from the optimized connection packet, disrupts the structure of this optimized connection packet and requires considerable programming effort.